---
id: unit8
title: 第八章 I/O设备管理
---
## I／O设备管理的基本概念
［单选］输人输出设备（1／O设备）也称为外部设备（Peripheral），有时简称为设备或外设，包括计算机系统中除CPU和内存储器以外的所有的设备和装置，例如各种外部存储设备。在不同的上下文中，I／O设备一词有广义和狭义两种含义，广义的1／0设备即上述定义，狭义的I／O设备不包括外存设备。

**I／O设备管理的任务：**
（1）I／0设备的性能经常成为系统性能的瓶颈。CPU性能越强，I／O设备性能同CPU性能不匹配的反差也就越大。如何解决这一矛盾是I／O设备管理的一项重要任务，操作
系统主要通过缓冲技术、中断技术和虚拟技术来解决这一问题。  
（2）I／O设备千变万化，对它们实现统一的管理，从而方便用户使用，是I／O设备管理的另一项重要任务。  
（3）用户对I／O设备的使用必须是安全的。对于设备的使用者而言，由设备传送或管理的数据应该是安全和保密的，不能破坏或泄露；对于设备的拥有者而言，多用户多任务
环境中的设备使用应该通过协调避免冲突，设备不能被破坏。如何保证安全正确地使用设备，也是设备管理的重要任务。

**I／O设备分类：**  
（1）按设备的使用特性分类，I／O设备可分为输入设备、输出设备、交互式设备、存储设备等。  
（2）若以系统中信息组织方式来划分设备，可把I／0设备划分为字符设备和块设备。  
（3）按设备使用可共享性分类，可分为独占设备、共享设备和虚拟设备等。

## I／O硬件和I／O软件的组成
I／O硬件组成：从硬件的角度看，1／0硬件由物理设备和电子部件两部分组成。物理设备是达成1／0硬件功能的物质基础，对操作系统而言更注重的是其电子部件的控制方式。
I／O软件组成：一般的I／O软件结构分为四层：中断处理程序，设备驱动程序，
设备独立的操作系统软件和用户级软件（指在用户空间的1／0软件）。从功能上看，设备独立层是I／O软件的主要部分；从代码量上看，设备驱动层是1／O软件的主要部分。

## I／O设备控制方式
**1／O设备的控制方式：**  
（1）程序控制方式。也称为PIO（Programmed 1／0，程控1／0）方式，是指由用户进程
直接控制处理器或内存和外围设备之间进行信息传送的方式，也称为“忙一等”方式、轮询方式或循环测试方式，这种方式的控制者是用户进程。  
（2）中断控制方式。中断控制方式的处理过程如下：
①处理器通过数据总线发出命令，启动外设工作，当前进程阻塞，调度程序调度其他进程。  
②外设数据准备好，置位中断请求触发器。  
③若此时接口中断屏蔽触发器状态为非屏蔽状态，则接口向处理器发中断请求（IR）。  
④处理器接受中断请求，且中断为允许中断状态，则中断判优电路工作。  
⑤中断判优电路对优先级最高的中断请求给予响应（INTA），处理器中断正在执行的其他进程，转而执行中断服务程序。  
（3）DMA控制方式。DMA方式的数据块传送过程可分为三个阶段：传送前预处理、数据传送、传送后处理。  
（4）通道控制方式。按照信息交换方式的不同，一个系统中可以设立三种类型的通道，即选择通道、数组多路通道和字节多路通道。  

## 设备分配与回收

在设备分配算法的实现中，常采用的数据结构主要含四张表，即系统设备表、设备控制表、控制器控制表和通道控制表。

**设备分配的总原则是：**要充分发挥设备的使用效率，尽可能地让设备忙碌，但又要避免由于不合理的分配方法造成进程死锁。

**独占设备的分配方法：**设备的绝对号与相对号、设备的指定方式、独占型设备的分配和释放。

**共享设备使用的具体方法：**  
（1）申请设备。如设备被占用，进入设备等待队列，否则分配设备。
（2）启动设备。I／O传输。
（3）释放设备。当设备结束，发出中断信号时，系统唤醒一个等待设备的进程。

## 磁盘调度策略
**信息传输时间：**  
（1）寻找时间-磁头在移动臂带动下移动到指定柱面所花的时间。  
（2）延迟时间-指定扇区旋转到磁头下所需的时间。  
（3）传送时间-由磁头进行读写完成信息传送的时间。  

常用的移臂调度算法有先来先服务算法、最短寻找时间优先算法、电梯调度算法和单向扫描算法。

## 缓冲技术
根据系统设置的缓冲区的个数，可把缓冲技术分为单缓冲、双缓冲和多缓冲以及缓冲池等几种。
**在缓冲池中，有四种工作缓冲区：**  
（1）用于收容设备输人数据的收容输入缓冲区hin。  
（2）用于提取设备输人数据的提取输入缓冲区sin。  
（3）用于收容处理器输出数据的收容输出缓冲区 hout。  
（4）用于提取处理器输出数据的提取输出缓冲区 sout。  

## 虚拟设备技术
**虚拟设备技术**又称为SPOOLing技术，是多道程序设计系统中处理独占1／0设备的一种方法，它可以提高设备利用率并缩短单个程序的响应时间。

SPOOLing系统主要包括输入程序模块、输出程序模块、作业调度程序三部分。